package com.kx.base.util;

import java.lang.reflect.Field;

/**
 * 用于实体类对象之间的数据拷贝（浅拷贝）
 *
 * @Author Sun
 * @Date 2021/7/16 22:41
 */
public class PropertiesUtil {

    public static void copy(Object source, Object target) {
        Class<?> sourceClass = source.getClass();
        Class<?> targetClass = target.getClass();
        Field[] declaredFields = sourceClass.getDeclaredFields();
        //遍历sourceClass的所有属性
        for (Field field : declaredFields) {
            //设置可见性
            field.setAccessible(true);
            //货物所有属性名
            String name = field.getName();
            Field targetField = null;
            try {
                //获取与source属性同名的属性，没有走catch
                targetField = targetClass.getDeclaredField(name);
            } catch (NoSuchFieldException e) {
                continue;
            }
            targetField.setAccessible(true);
            try {
                //设置target对象的targetField成员，值为source的field成员的值。
                targetField.set(target,field.get(source));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}
